// 引入一个包
const path = require('path')

// 引入html插件    自动生成html 自动引入js
const HtmlWebpackPlugin = require('html-webpack-plugin')
    // 自动清除之前的dist
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
    //webpack的配置信息
module.exports = {
    mode: 'production', // 设置mode
    // 入口文件
    entry: './src/index.ts',
    // 出口的文件所在目录
    output: {
        path: path.resolve(__dirname, 'dist'),
        // 打包后的文件名
        filename: 'boundle.js',
        // 告诉webpack 打包时别用 箭头函数
        environment: {
            arrowFunction: false
        }
    },
    //指定webpack打包 模块
    module: {
        // 打包规则
        rules: [{
            // 规则生效的文件
            test: /\.ts$/,
            // 使用的loader
            use: [{
                    // js兼容性处理
                    loader: "babel-loader",
                    options: {
                        presets: [
                            [
                                "@babel/preset-env",
                                {
                                    "targets": {
                                        "chrome": "58",
                                        "ie": "11"
                                    },
                                    // 模拟低版本js环境 promise
                                    "corejs": "3",
                                    // 按需加载
                                    "useBuiltIns": "usage"
                                }
                            ]
                        ]
                    }
                },
                {
                    loader: "ts-loader",

                }
            ],
            // 要排除的文件
            exclude: /node_modules/
        }]
    },
    // 配置webpack插件  
    plugins: [
        new HtmlWebpackPlugin({
            // title: 'hahah'
            // 指定模板
            template: "./src/index.html"
        }),
        new CleanWebpackPlugin()
    ],
    // 设置引用模块  webpack不认识ts
    resolve: {

        extensions: ['.ts', '.js']
    }

}